﻿using System;
using System.Collections;
using System.Collections.Generic;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using Negocio;

public partial class Procesos_frmPedidos : System.Web.UI.Page
{
    Pedido objeto = new Pedido();
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            HabilitarControles(true);
            CargarControles();
            Session["Pedido"] = null; 
        }
        else
        {
            if (Session["Pedido"] != null)
            {
                objeto = (Pedido)Session["Pedido"];
            }
        }
    }
    
    protected void butAgregar_Click(object sender, EventArgs e)
    {
        //TODO: Hacer objeto.AgregarDetalle(Articulo.ObtenerPorId(ddlArticulo.SelectedItem.Value),decimal.Parse(txtPrecio.Text),int.Parse (txtCantidad.Text));
        CargarGrilla(objeto.PedidoDetalle);
    }
    protected void grvDatos_SelectedIndexChanged(object sender, EventArgs e)
    {
        objeto.PedidoDetalle.RemoveAt(grvDatos.SelectedIndex);
        CargarGrilla(objeto.PedidoDetalle);
    }
    protected void grvDatos_PageIndexChanged(object sender, EventArgs e)
    {

    }

    protected void CargarControles()
    {
        Delivery hdMaster = (Delivery)this.Master;
        ((Label)hdMaster.FindControl("lblTitulo")).Text = this.Title;

        //Carga combo letras
        ddlLetra.Items.Clear();
        ddlLetra.Items.Add("X");
        ddlLetra.DataBind();
        //Carga punto de venta
        txtPuntoVenta.Text = "0001";
        //Carga ultimo numero correspondiente a la letra
        txtNumero.Text = Pedido.ObtenerNumeroSiguiente(char.Parse(ddlLetra.Text), int.Parse(txtPuntoVenta.Text)).ToString();
        //Cargo fecha emision del dia
        txtFechaEmision.Text = DateTime.Today.ToShortDateString();
        //Carga combo clientes
        ddlCliente.DataValueField = "Codigo";
        ddlCliente.DataTextField = "ClienteString";
        ddlCliente.DataSource = Cliente.ObtenerTodos();
        ddlCliente.DataBind();
    }
    protected void CargarGrilla(List<PedidoDetalle> pedidoDetalle)
    {
        grvDatos.DataSource = pedidoDetalle;
        string[] keys = { "Pedido","Renglon" };
        grvDatos.DataKeyNames = keys;
        grvDatos.DataBind();
        Session["Pedido"] = objeto;
    }
        
    protected void CopiarDatos()
    {
        objeto.Letra = char.Parse( ddlLetra.Text);
        objeto.PuntoVenta = int.Parse(txtPuntoVenta.Text);
        objeto.Numero = int.Parse(txtNumero.Text);
        objeto.FechaEmision = DateTime.Parse( txtFechaEmision.Text);
        objeto.Cliente = Cliente.ObtenerPorCodigo(ddlCliente.SelectedItem.Value);
        objeto.Observacion = txtObservacion.Text;
    }

    protected void Limpiar()
    {
        ddlLetra.SelectedIndex = 0;
        txtPuntoVenta.Text = string.Empty;
        txtNumero.Text = string.Empty;
        txtFechaEmision.Text = string.Empty;
        ddlCliente.SelectedIndex = 0;
        txtTelefono.Text = string.Empty;
        txtDireccion.Text = string.Empty;
        ddlArticulo.SelectedIndex = 0;
        txtPrecio.Text = string.Empty;
        txtCantidad.Text = string.Empty;
        txtSubTotal.Text = string.Empty;
        txtObservacion.Text = string.Empty;
    }

    protected void HabilitarControles(bool enable)
    {
        ddlLetra.Enabled = !enable;
        txtPuntoVenta.Enabled = !enable;
        txtNumero.Enabled = !enable;
        txtFechaEmision.Enabled = !enable;
        ddlCliente.Enabled = enable;
        txtTelefono.Enabled = !enable;
        txtDireccion.Enabled = !enable;
        ddlArticulo.Enabled = enable;
        txtPrecio.Enabled = !enable;
        txtCantidad.Enabled = enable;
        txtSubTotal.Enabled = !enable;
        butAgregar.Enabled = enable;
        txtObservacion.Enabled = enable;
        butGuardar.Enabled = enable;
    }

    protected void ddlCliente_SelectedIndexChanged(object sender, EventArgs e)
    {
        Cliente obj = Cliente.ObtenerPorCodigo( ddlCliente.SelectedItem.Value);
        txtTelefono.Text = obj.Telefono;
        txtDireccion.Text = obj.Direccion;
    }
    protected void butGuardar_Click(object sender, EventArgs e)
    {
        CopiarDatos();
        objeto.Persistir();
        Limpiar();
        CargarControles();
    }
    protected void txtCantidad_TextChanged(object sender, EventArgs e)
    {
        txtSubTotal.Text = (int.Parse(txtPrecio.Text) * int.Parse(txtCantidad.Text)).ToString();
    }
    protected void ddlArticulo_SelectedIndexChanged(object sender, EventArgs e)
    {
        //TODO: Hacer
        //Articulo obj = Articulo.ObtenerPorId(ddlArticulo.SelectedItem.Value);
        //txtPrecio.Text = obj.Precio.ToString();
    }
}
